/**
 * V5和Vue之前的桥接器
 */
if (window._ctpTop === undefined) {
	// 默认top
	window._ctpTop = window;
}
window.ctpTop = window._ctpTop;

if (window._pagePath === undefined) {
	// 默认page
	window._pagePath = '/seeyon/apps_res';
}
/**
 * 获取A8的顶层
 * @returns {Window}
 */
const getCtpTop = () => {
	if (window.getCtpTop) {
		return window.getCtpTop();
	}
	return window._ctpTop;
};

/**
 * 打开v5弹出框
 * @param module 模块
 * @param dialogParams  数据
 */
const openPage = (module, dialogParams) => {
	let dialogUrl = dialogParams.url;
	if (dialogParams.url.startsWith('/')) {
		dialogUrl = dialogUrl.substring(1);
	}
	if (process.env.NODE_ENV === 'production') {
		dialogUrl = `${window._pagePath}/${module}/${dialogUrl}`;
	} else {
		// 热加载不支持'/'，替换为$
		dialogUrl = dialogUrl.replace(/\//g, '$');
		dialogUrl = `./${dialogUrl}`;
	}
	dialogParams.url = dialogUrl;
	return getCtpTop().$.dialog(dialogParams);
};


/**
 * V5 选人代理
 */
const selectPeople = (params) => {
	getCtpTop().$.selectPeople(params);
};


const msgBox = (params, type) =>{
	return new Promise((resolve, reject) => {
		var _params;
		if (typeof params === 'string') {
			_params = { msg: params };
		} else {
			_params = { ...params };
		}
		getCtpTop().$[type]({
			..._params,
			ok_fn() {
				//点击确定后执行的函数
				if (typeof _params.ok_fn !== 'undefined') {
					// 传统回调
					_params.ok_fn();
				}
				resolve('ok');
			},
			cancel_fn() {
				//点击取消后执行的函数
				if (typeof _params.cancel_fn !== 'undefined') {
					// 传统回调
					_params.cancel_fn();
				}
				resolve('cancel');
			},
			yes_fn() {
				//点击是后执行的函数
				if (typeof _params.yes_fn !== 'undefined') {
					// 传统回调
					_params.yes_fn();
				}
				resolve('yes');
			},
			no_fn() {
				// 	点击否后执行的函数
				if (typeof _params.no_fn !== 'undefined') {
					// 传统回调
					_params.no_fn();
				}
				resolve('no');
			},
			retry_fn() {
				// 点击重试后执行的函数
				if (typeof _params.retry_fn !== 'undefined') {
					// 传统回调
					_params.retry_fn();
				}
				resolve('retry');
			},
			detail_fn() {
				// 点击详情后执行的函数
				if (typeof _params.detail_fn !== 'undefined') {
					// 传统回调
					_params.detail_fn();
				}
				resolve('detail');
			},
			close_fn() {
				//点击右上角 X 调用的方法
				if (typeof _params.detail_fn !== 'undefined') {
					// 传统回调
					_params.close_fn();
				}
				resolve('close');
			}
		});
	});
};

/**
 * v5 confirm代理
 * @param params
 */
const confirm = (params) => {
	return msgBox(params, 'confirm');
};

/**
 * v5 alert代理
 * @param params
 */
const alert = (params) => {
	return msgBox(params, 'alert');
};
/**
 * v5 infor代理
 * @param params
 */
const info = (params) => {
	return msgBox(params, 'info');
};
/**
 * v5 error代理
 * @param params
 */
const error = (params) => {
	return msgBox(params, 'error');
};
/**
 * v5 dialog代理
 * @param params dialog参数
 */
const dialog = (params) => {
	return getCtpTop().$.dialog(params);
};
/**
 * 打开loading
 */
const loading = () =>{
	let a8Top = getCtpTop();
	if (a8Top && a8Top.startProc) {
		a8Top.startProc();
	}
};
/**
 * 取消loading
 */
const stopLoading = () =>{
	let a8Top = getCtpTop();
	if (a8Top && a8Top.endProc) {
		a8Top.endProc();
	}
};

/**
 * 和V5之前相互操作桥接器
 */
export default {
	openPage,
	getCtpTop,
	selectPeople,
	confirm,
	alert,
	info,
	error,
	dialog,
	loading,
	stopLoading
};
